package com.ufpr.bean;

import java.sql.SQLException;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;

import org.primefaces.context.RequestContext;

//import com.naotebuk.dao.ClienteDAO;
//import com.naotebuk.dao.ConsertoDAO;
//import com.naotebuk.entity.Cliente;
//import com.naotebuk.entity.Conserto;
//import com.naotebuk.enums.FormaDePagamento;
//import com.naotebuk.enums.StatusConserto;
//import com.naotebuk.utils.EMailUtil;
//import com.naotebuk.vo.FiltroConsertoVO;

@ManagedBean
@SessionScoped
public class ConsertoManagedBean extends GenericManagedBean {

//	// fields
//	private Conserto conserto;
//	private List<Conserto> consertos;
//	private FiltroConsertoVO filtro;
//	
//	// constructors
//	public ConsertoManagedBean(){
//		filtro = new FiltroConsertoVO();
//	}
//	
//	// public methods
//	public void salvar() {
//		if (ConsertoDAO.save(conserto)) {
////			consertos.add(conserto);
//			addInfoMessage("Conserto salvo com sucesso.");
//			RequestContext.getCurrentInstance().execute("dlgEdicao.hide()");
//		} else 
//			addErrorMessage("Não foi possível salvar o conserto.");
//	}
//	public void concluirConserto() throws SQLException {
//		if (conserto == null || conserto.getIdConserto() == 0) {
//			FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Conserto", "Conserto não selecionado.");
//			FacesContext.getCurrentInstance().addMessage(null, msg);
//			return;
//		}
//		conserto.setDataConclusao(new Date());
//		if (!ConsertoDAO.save(conserto)) {
//			FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Conserto", "Não foi possível salvar o conserto.");
//			FacesContext.getCurrentInstance().addMessage(null, msg);
//			return;
//		}
//		enviaEmailConserto(conserto);
//		addInfoMessage("E-mail enviado com sucesso.");
//		RequestContext.getCurrentInstance().execute("dlgConclusaoConserto.hide()");
//	}
//	public void realizarPagamentoConserto() throws SQLException {
//		if (conserto == null || conserto.getIdConserto() == 0) {
//			FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Conserto", "Conserto não selecionado.");
//			FacesContext.getCurrentInstance().addMessage(null, msg);
//			return;
//		}
//		if (!ConsertoDAO.save(conserto)) {
//			FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Conserto", "Não foi possIvel salvar o conserto.");
//			FacesContext.getCurrentInstance().addMessage(null, msg);
//			return;
//		}
//		RequestContext.getCurrentInstance().execute("dlgModalPagamento.hide()");
//	}
//	public StatusConserto[] listaStatusConserto() {
//		return StatusConserto.values();
//	}
//	public List<StatusConserto> getListaDeStatusDeConsertos() {
//		List<StatusConserto> result = new ArrayList<StatusConserto>();
//		result.add(StatusConserto.TODOS);
//		result.add(StatusConserto.EM_ABERTO);
//		if (getUsuarioLogado().isGerente()) {
//			result.add(StatusConserto.EM_ATRASO);
//			result.add(StatusConserto.A_SER_RETIRADO);
//			//result.add(StatusConserto.FINALIZADO);
//		}
//		return result;
//	}
//	public List<FormaDePagamento> getFormasDePagamento() {
//		return Arrays.asList(FormaDePagamento.values());
//	}
//	public String pesquisaConserto() {
//		try {
//			consertos = ConsertoDAO.getConsertos(filtro);
//		} catch (Exception e) {
//			e.printStackTrace();
//		}
//		return "";
//	}
//	public String novoConserto() {
//		this.conserto = new Conserto();
//		this.conserto.setDataEntrada(new Date());
//		this.conserto.setDataPrevisaoEntrega(new Date());
//		System.out.println("Novo conserto" );
//		return "";
//	}
//	public List<Cliente> completaNome(String cpf) {
//		return ClienteDAO.buscaPorCpfParecido(cpf);
//	}
//	public void selecionaConserto(Conserto c) {
//		this.conserto = c;
//	}
//	public void excluirConserto() {
//		System.out.println("Excluindo conserto..." + conserto.getIdConserto());
//		try {
//			if (ConsertoDAO.delete(conserto)) {
//				consertos.remove(conserto);
//				FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Conserto", "Conserto excluído com sucesso.");
//				FacesContext.getCurrentInstance().addMessage(null, msg);
//			} else {
//				FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Conserto", "Erro ao excluir conserto.");
//				FacesContext.getCurrentInstance().addMessage(null, msg);
//			}
//		} catch (SQLException e) {
//			e.printStackTrace();
//		}
//	}
//	public String getTotalOrcadoFormatted() {
//		double result = 0;
//		if (this.consertos != null) {
//			for (Conserto conserto : consertos) {
//				result += conserto.getValorOrcado();
//			}
//		}
//		DecimalFormat fmt = new DecimalFormat("R$ 0.00");      
//		return fmt.format(result);
//	}
//	public String getTotalPagamentoFormatted() {
//		double result = 0;
//		if (this.consertos != null) {
//			for (Conserto conserto : consertos) {
//				result += conserto.getValorPagamento();
//			}
//		}
//		DecimalFormat fmt = new DecimalFormat("R$ 0.00");      
//		return fmt.format(result);
//	}
//	
//	// private methods
//	private void enviaEmailConserto(Conserto conserto) throws SQLException {
//		String destinatario = conserto.getCliente().getEmail();
//		String assunto = "NAOTEBUK - Seu conserto foi conclu�do";
//		StringBuilder texto = new StringBuilder();
//		texto.append("Olá " + conserto.getCliente().getNome() + ",");
//		texto.append("\n\n");
//		texto.append("O conserto número " + conserto.getIdConserto() + " foi concluído.");
//		texto.append("\nPode retirar seu equipamento em nossa loja.");
//		texto.append("\n\n");
//		texto.append("Equipe NAOTEBUK");
//		
//		EMailUtil email = new EMailUtil();
//		email.sendMail(destinatario, assunto, texto.toString());
//	}
//
//	// getters
//	public Conserto getConserto() {
//		return conserto;
//	}
//	public List<Conserto> getConsertos() throws SQLException {
//		if (consertos == null)
//			consertos = ConsertoDAO.getConsertos(filtro);
//		return consertos;
//	}
//	public FiltroConsertoVO getFiltro() {
//		return filtro;
//	}
//
//	// setters
//	public void setConserto(Conserto conserto) {
//		this.conserto = conserto;
//	}
	
}
